Delay lines are commonly used in the electronics art to provide predetermined amounts of delay for signals. The delay facilitates the implementation of many functions and features. For example, in the field of audio signal processing, digital audio delay lines are used to provide echo effects, reverberation effects, distortion effects, three-dimensional (3-D) audio, and environmental modeling.
A digital delay line is conventionally implemented with a block of memory that is accessed using two pointers, a read pointer and a write pointer. The memory block contains data samples. The read and write pointers point to the locations in the delay line containing the current read and write samples, respectively. As a data sample is written to the current location in the delay line, the write pointer is advanced to the next location. Similarly, as a data sample is retrieved from the delay line, the read pointer is advanced to the next data sample. The difference between the read and write pointers represents the signal delay, in sample periods. By adjusting the location of either the read or the write pointer, or both, different amounts of delay can be obtained.
Many digital signal processor (DSP) algorithms that use digital delay lines require access to the delay lines with minimal latency (or low or near-zero access delay). Typically, a relatively large number of delay lines are needed to support these algorithms. Further, a read and a write access are typically performed for each delay line and for each sample period.